1次データ から 2次データ を作成するための具体的な手順は、イメージしにくいと思います。
リンク先 は、簡単なケースの例です。 Excel上で、VBAを使って加工しています。 「データ1次」というシートのデータを加工して、「データ2次」というシートに出力するためのマクロです。 マクロに書かれているプログラムの主要な部分は、下記のようなものです。
ポイントがいくつかあります。
リンク先 の例では、バッチの切れ目は、「モード」という列の情報でわかります。
「モード」のような便利な列がある時は、楽です。 ない場合は、例の場合なら、「温度が50.1℃の上か下かで判断する。」という方法でも、ほぼ同じ解析ができます。
「モード」のような列がない場合は、いろいろな情報を駆使する必要があります。
時刻と時間の扱い方 の知識が必要です。 このプログラムでは、「分」の単位で集計したかったので、24と60をかけて、「分」に換算しています。
このプログラムで難しい部分のひとつは、前バッチの終わりと、次のバッチの開始の間の時間(停止時間)の出し方です。 新しいバッチでのEndtimeを記憶する前に、計算するのがポイントです。
停止時間は、解析の目的によっては不要ですが、 チョコ停やドカ停の解析 のように、工場の解析では重要なもののひとつです。
最高温度は、Excelの関数を使って求めています。
関数でできる場合は、簡単に書けてしまいますが、例えば、「最高温度に達するまでの時間」等、 ものによっては、求めるためのプログラムを自分で考える必要もあります。
OutputGyo = 2 '出力先の行の初期値
For i1 = 2 To 10000 '2行目から10000行目までを順に見て行く
If Worksheets("データ1次").Cells(i1, 1) = "" Then Exit For 'i1行の、1列目が空白なら、ループを出る。
If Worksheets("データ1次").Cells(i1, 2) = 0 And Worksheets("データ1次").Cells(i1 + 1, 2) > 0 Then '2列目を使って、バッチの開始行を抽出
StartTime = Worksheets("データ1次").Cells(i1 + 1, 1) 'バッチの開始時刻を記憶
StartGyo = i1 'バッチ開始行を記憶
End If
If Worksheets("データ1次").Cells(i1, 2) > 0 _
And Worksheets("データ1次").Cells(i1 + 1, 2) = 0 Then '2列目を使って、バッチの終了行を抽出
If OutputGyo > 2 Then '前のバッチの終了からの時間を出力するが、最初のバッチは前バッチがないので、出力しない
Worksheets("データ2次").Cells(OutputGyo, 4) = (StartTime - EndTime) * 24 * 60 '前のバッチの終了からの時間(分単位に換算)
End If
EndTime = Worksheets("データ1次").Cells(i1, 1) 'バッチの終了時刻を記憶
EndGyo = i1 'バッチの終了行を記憶
Worksheets("データ2次").Cells(OutputGyo, 1) = StartTime 'バッチ開始の時刻を出力
Worksheets("データ2次").Cells(OutputGyo, 2) = EndTime 'バッチ終了の時刻を出力
Worksheets("データ2次").Cells(OutputGyo, 3) = (EndTime - StartTime) * 24 * 60 'バッチの時間(分単位に換算)を出力
Worksheets("データ2次").Cells(OutputGyo, 5) _
= WorksheetFunction.Max( _
Range(Worksheets("データ1次").Cells(StartGyo, 3), Worksheets("データ1次").Cells(EndGyo, 3)))
'バッチの間の最高温度を出力
OutputGyo = OutputGyo + 1 'データの出力先の行を次の行にする
End If
Next i1
上記は、 2次データ の作成の、一番のポイントだけにしています。
実用でも使えるところまで作りこんだものが、 リンク先 にあるExcelのマクロです。 万能ではありませんが、2次データ作成で一番わかりにくい部分はまとめています。 プログラミングの得意な人なら、これをエンジンにして応用が広げられると思います。
このマクロを使うと、バッチごとに、「7 + 変数の数×14」個の特徴量が作成できます。 例えば、変数が2個あれば、35個の特徴量ができます。
リンク先のサンプルファイルでは、グラフのようなデータを、表のような2次データに変換します。
「1次データ」というシートに1次データを貼ります。
データの1行目が項目名(変数名)です。 マクロでは、とりあえず100個まで使えるようになっています。 ただし、数値のデータしか扱えません。
1列目(A列)は時刻のデータ、 2列目(B列)はバッチの判定ができるデータ、 3列目(C列)は参照データです。 4列目以降は、何でも良いです。
参照データは、温度制御に使っているデータなどが良いです。 バッチ判定に使うデータと参照データが同じ場合は、2列目と3列目に同じデータを書いておけば良いです。
周期の開始からの経過時間を5種類まで設定できます。 この経過時間になった時の、各項目の値が抽出されます。
また、参照データが、指定した値に到達した時の、各項目の値も抽出できます。 参照データの到達の仕方には、上昇しながら到達する場合と、 下降しながら到達する場合があるので、どちらが良いのかを、「上」または「下」と書いて指定します。 また、同じ周期の中で何回目に到達した時を見たいのかも指定します。
「設定値」シートにある「マクロスタート」のボタンを押します。